[レポート] AIの実験を加速させ、イノベーションの文化を育む (Foster a Culture of Innovation by Accelerating AI Experimentation) #datacloudsummit
大阪オフィスの玉井です。
2021年5月現在、Google Cloud主催の「Data Cloud Summit」が開催されています。オンデマンドで各種ウェビナー動画を閲覧することができます。
当記事では、Foster a Culture of Innovation by Accelerating AI Experimentationというセッションをレポートします。
概要
公式
概要
Accelerate your organization’s digital transformation through rapid experimentation and lead the development of an agile and collaborative culture of data-driven innovation. Learn how to use AI notebooks for experimentation front-loading, and off-the shelf accelerators for testing at the application level. Explore Reference Patterns and Looker Blocks for pre-built data models so you can rapidly begin analyzing and intelligently operationalizing new data sets.
ざっくり
GCPとLookerを用いた機械学習開発(実験)のワークフローについて、紹介とデモが行われました。
セッションレポート
※レポート本文のみ、一人称は登壇者を指します。
前段
私の名前はSudsです。Google Cloudのプロダクトマネージャーをしています。特にnotebook製品を担当しています。今日は、開発者支援チームのLeighaが参加しています。彼女はデータとアナリティクスを担当しています。今日は、Google CloudとGoogle Cloud Servicesが実験プロセスをどのように高速化するかについてお話しできることを非常に楽しみにしています。
お客様からは、「AIの実験は大変で時間がかかる」と何度も言われています。
最高のモデルを構築することとは関係のない作業に多くの時間を費やしています。例えば、データの検索、データへのクエリの設定、モデルを開発するための環境の構築、そしてそのモデルをユーザーに公開して評価してもらう方法の検討などです。このように、AIの実験は、時間がかかるもので、かつ複雑です。
それでは、お客様が直面しているこれらの問題と、Google Cloudがこれらの問題を具体的にどのように解決できるのかについて、詳しく見ていきましょう。
今までのデータサイエンス・ワークフローとその課題
従来のデータサイエンスのワークフローは、個人であればデータから始まり、いくつかのデータセットを使って遊んでいるのであれば、トレーニングに必要なデータを把握するのはかなり簡単です。しかし、今回の話は、それとは全く別の話です。
多くのお客様がおっしゃるように、企業にはさまざまな環境に散在する多くのデータソースがあり、データは多岐にわたり、データの質もソースによって大きく異なります。お客様が必要としているのは、統一されたデータ処理エンジンと統一されたデータウェアハウスであり、このような複雑さを抽象化し、お客様が関心を持ち、トレーニングに適していると判断したデータに簡単に直接接続できるようにすることです。
次にお客様から伺うのは、学習に必要なデータがわかっても、モデルを開発するのは一筋縄ではいかないということです。
モデルを繰り返し開発するには、よく接続されたnotebook環境が必要です。お客様と一緒に開発する効率的なモデルには、最新の深層学習フレームワークとライブラリを備えたnotebook環境が必要です。TensorFlow、PyTorch、scikit-learnなどですね。また、企業内のすべてのデータソースにnotebookが接続されることも望まれています。モデルの開発に取り掛かったら、実験の進捗状況を適切に評価し、どのモデルが最も効果的かを判断するための可視化ツールや分析ツールも必要です。
最後に、お客様は実験を終えた後、実験結果をビジネスの関係者に伝え、関係者がモデルを評価できるようにしたいと考えています。一般的には、データを元の場所に戻し、消費者がそのデータから得た知見を視覚化します。そして、構築されたばかりのモデルの有効性を分析します。
Notebooks, Looker, BigQuery and Dataproc
GCPには、このようなお客様の問題を解決するためのサービスがいくつかあります。
BigQueryを使用すると、お客様は、データサイエンティストがモデルをトレーニングするために必要なすべてのデータを提供できるシングルソースオブトゥルースを使用することができます。
Dataprocは、Google Cloud Storageに保存されている大量のデータを処理するためのマネージドSparkサービスです。
Lookerは、データのモデリングとビジュアライゼーションのためのビジネスインテリジェンスサービスです。
Notebooksは、企業のお客様がデータの調査、MLコードの開発、学習されたモデルの評価を迅速に行うことができるJupyterLabのホスティングサービスです。Notebooksでは、お客様が必要とするオープンソースのフレームワークやライブラリをすべて管理していますので、お客様はJupyterLabの環境を構築することなく、MLの開発に専念することができます。
Notebooksは、DataprocやBigQueryなど、あらゆるデータソースと連携するように設計されています。Notebooksは、data procクラスタ上で直接実行して、インタラクティブなsparkセッションを行うことができますし、NotebooksはBigQueryのテーブルに直接接続して、簡単に調査や問い合わせを行うことができます。Notebooksは、LookerやLooker APIと接続して、Lookerが提供する強力なデータモデルに接続することもできます。
それでは、これ以降は、Leighaに引き継がせていただきます。彼女は、これらのステップをさらに深く掘り下げて、AIの実験にどのように役立つかを説明しますので、よろしくお願いします。
GCPを利用したAI実験ワークフロー
ステップ1: データ変換とデータ前処理
それでは、Google Cloud Platformを利用したAI実験ワークフローの一例をご紹介しましょう。
Google Cloud Storageのバケットには、データレイクのように多くの非構造化データが存在します。そして、そのデータを準備し、クリーニングする必要があります。しかし、規模が大きくなると、Dataprocや、GCPが管理するHadoopクラスタの出番となります。DataprocやGCPが管理するHadoopクラスタであれば、アーキテクチャや統合の設定を行う必要はなく、Sparkワークフローを実行してデータのクリーニングや準備を行うことができます。そして、SparkのBigQueryコネクタを使用して、そのデータをエンタープライズデータウェアハウスにプッシュすることができます。このデータウェアハウスは、そのデータの上に構築された様々な分析ワークフローやデータサイエンスワークフローのためのシングルソースオブトゥルースとなります。
BigQueryにデータを取り込んだ後は、様々な特徴の相関関係を理解し、機械学習モデルで使用するための良いトレーニングデータセットを構築する必要があります。
ステップ2: データセットの探索と構築
LookerはBigQueryの上に置かれます。そして、一元化されたデータモデルやデータディクショナリーを構築し、すべてのメトリクスやKPIを定義します。これは、組織全体のシングルソースオブトゥルースにもなります。つまり、常に同じ方法でKPIやメトリクスを定義することができるのです。データサイエンティストは、LookerのExploreに飛び込んで、機械学習モデルに導入したいさまざまなメトリクスを選択するだけでよいのです。そして、チームの他のメンバーと同じデータソースと定義を使用していることを確認します。
ステップ3: 意義のあるモデルの作成
トレーニングデータセットを構築したら、LookerのPython SDKを使ってNotebooksにインポートし、モデルの設定を実際に試してみることができます。先に述べたように、このアーキテクチャの素晴らしい点は、インフラのセットアップや、Pythonパッケージや依存関係をあらかじめ環境に入れておくことに時間を費やす必要がないことです。自分のチームに最適なハードウェアや環境を選んで、すぐに機械学習モデルの構築に取り掛かることができます。
ステップ4: テストと実験
さて、さまざまな機械学習モデルを試しているうちに、その中で何が起こっているのかをさらに詳しく知る必要があります。どの機能が結果に影響を与えているのか?有効性を示す指標は何か?
Notebooksに直接プラグインできるオープンソースのウィジェットであるWhat-If ツールを使用して、2つの異なるモデルを比較し、より深く掘り下げてモデルの結果に何が影響しているかを把握し、機械学習モデルをどのように構成するか、どのようなパラメータを使用するかを決定し、さらにフィーチャーエンジニアリングを行うことができます。
ステップ5: 実用的な洞察を出す
モデルの実験が終わったら、あるいは初期の結果に満足したら、それらをBigQueryに戻して、より広いチームで利用できるようにすることができます。
例えば、このデータの上にダッシュボードを構築し、機械学習モデルから得られたインサイトをビジネス関係者に提供することができます。このように、データは常にリアルタイムであることが大きな特徴です。私が実験をして、より多くの結果をBigQueryにプッシュしている間に、Lookerのダッシュボードには、データが常にリアルタイムで表示されます。Lookerダッシュボードは、その都度、結果をクエリしてくれます。このようにして得られたインサイトを運用することで、関係者がすぐに行動を起こせるようになります。
デモ
それでは、実際にこのワークフローを確認するために、デモをしてみましょう。私がEコマース企業で働くデータサイエンティストだとします。顧客の購買傾向を予測する機械学習モデルを構築したいと考えています。
Dataproc
最初の問題は、私のCRMデータが少し混乱していることです。
そこで、Sparkを使ってデータを整理・変換するPythonスクリプトを作成しました。Google Cloud Consoleで、Dataprocクラスタを立ち上げました。このクラスタにジョブを投入して、Sparkのワークフローを実行すると、データがクリーンになり、BigQueryのテーブルにプッシュされます。
Looker
次に、Lookerにアクセスして、このデータの調査を開始します。
Google Analyticsのデータを使用しているので、Looker MarketplaceからGA360用のBlocksをインストールしました。このブロックがあれば、指標の概要やデータモデルの作成を気にすることなく、分析を開始することができます。
このダッシュボードでは、私のウェブサイトで発生したセッションの総数を見ることができます。
ここで「Explore」をクリックすると、Lookerのデータ探索環境に移動し、トレーニングデータセットの構築を始めることができます。
まず、顧客がいつ購入するかを表す指標を探したいと思います。購入したかどうかを確認するために、has purchased
フラグを導入します。また、最初のトランザクションの前にフィルターをかけて、ユーザーの最初のトランザクションの前に起こったセッションのみをキャプチャします。次に、総ヒット数、平均セッション時間、セッションごとのイベント数などの予測値を入力します。
「Run」をクリックすると、Lookerが我々に代わって巨大なSQLをBigQueryに送り返してくれます。素晴らしいのは、この SQL文をコピー&ペーストしたり、別のモデルに組み込むために断片を借りたりする心配がないことです。Lookerのシングルソースのデータモデルにより、私は他のチームと同じデータソースと同じビジネスロジックを使用していることを確認できます。
ここでは、購入されたお客様の平均セッション時間とセッションごとのイベント総数がやや多いことがわかります。個々のお客様レベルでの予測を行う場合は、お客様のユーザーIDも必要になります。
では、これをフォルダに保存してみましょう。これを購入傾向モデルのトレーニングデータセットと呼ぶことにします。
Notebooks
さて、いよいよ自分のモデルを使って実験を始めましょう。
AI Notebooksのコンソールでは、実行中の各インスタンスを確認できます。先ほど述べたように、マシンタイプやハードウェア、Notebooksを実行する環境を柔軟に設定できます。ここでは、pandasやscikit-learnなどのPythonパッケージがプリインストールされているTensorFlow環境を利用しています。
LookerのPython SDKを使ってLookerインスタンスに接続し、新しいExploreに構築したトレーニングデータセットをインポートします。データがNotebooksに読み込まれると、今度はTensorFlow用にデータを準備し、機械学習モデルの作成とトレーニングを始めることができます。
そもそもの目的に戻りますが、私は顧客が購入する可能性があるかどうかを予測するバイナリ分類モデルを作成しようとしています。まず、線形分類器を作成してトレーニングします。そして、分類器の作成と学習を試してみます。
さまざまなモデル構成を試しているので、異なるモデルを比較して、どのモデルが私のニーズに最も適しているかを把握したいと思います。What-Ifツールを使って、モデルを比較し、何がうまくいっていて、何がうまくいっていないのかを詳細に調べることができます。
「Performance and Fairness」タブでは、グランドトゥルースの特徴を指定し、異なるフィールドでスライスして、偽陰性、偽陽性、その次元内の精度を調べることができます。例えば、ここでは、このグループのセッションごとのイベント数を見ています。このグループの精度は97.4%ですが、他のグループの精度はもっと高いことがわかります。
また、「Features」タブでは、各特徴の値の分布を見ることができます。これは、将来のイテレーションにおいて、モデルに追加すべきものや除外すべきものを決定するのに役立ちます。実験を行う際には、モデルの結果をBigQueryのテーブルに直接プッシュすることができ、それをチームのルックアップダッシュボードに表示することができます。
再びLooker
これで、マーケティングチームの誰かがLookerに飛び込んで、機械学習モデルの結果を自分で調べられるようになりました。
ここではダッシュボードを作成し、受信者1人あたりの推定キャンペーンコストなどのさまざまなパラメータを変更して、追加の収益キャンペーンコストや総利益、キャンペーンROIを推定できるようにしました。ここから、マーケティング担当者は、マーケティングキャンペーンを起動して、情報に基づいて行動を起こすことを決定できます。
Lookerのアクションでは、顧客の電子メールアドレスなどのファーストパーティデータをマーケティングプラットフォームに送信して、このキャンペーンを作成することができます。これで、機械学習モデルの実験を続ける際に、データを更新したり、結果の抜粋を送ったりすることを心配する必要はありません。
まとめ
今回のプレゼンテーションでは、Google Cloud Platformを使ってAIの実験を加速する方法をしっかりとご理解いただけたと思います。インフラやモデルの依存関係の設定などの面倒な作業に費やす時間を減らし、データ探索を目的とした完全に管理されたスケーラブルなインフラを使って、モデルの構成を実験したり、それらの洞察を運用したりする時間を増やすことができるわけです。さらに、Looker Blocksやスマートアナリティクスのリファレンスパターンなど、あらかじめ組み込まれた分析パターンも用意されています。これにより、開発を迅速に開始することができ、インパクトのあるインサイトを得るためにより多くの時間を費やすことができるようになるでしょう。
本日はご参加いただきありがとうございました。天気予報や国勢調査などのLooker Blocksをチェックして、公共のデータセットをデータ分析に取り入れてみてください。また、スマート アナリティクスのリファレンス パターンでは、Eコマースプラットフォームのレコメンデーションシステム構築など、あらかじめ構築された機械学習パターンを確認できます。 これらの洞察を加速させるために、ぜひ、ご利用ください。
おわりに
GCPの各種サービスも強力ですが、キモはLookerのAPIではないでしょうか。BIツールながら、データの論理的なモデリングができるのがLookerの特徴ですが、そのデータモデルをAPI経由で持ってこれるので、Notebooks等から直接アクセスできるのが強いですね。
どうでもいいですが、「Lookerでいうモデル」と「機械学習でいうモデル」がごっちゃになりそうなので、気をつけたいところです。